This application relates generally to development of component based applications and their availability over a network.
There is a continually increasing number of terminals and mobile devices in use today, such as smart phones, PDAs with wireless communication capabilities, personal computers, self service kiosks and two-way pagers/communication devices. Software applications which run on these devices increase their utility. For example, a smart phone may include an application which retrieves the weather for a range of cities, or a PDA may include an application that allows a user to shop for groceries. These software applications take advantage of the connectivity to a network in order to provide timely and useful services to users. However, due to the restricted resources of some devices, and the complexity of delivering large amounts of data to the devices, developing and maintaining software applications tailored for for a variety of devices remains a difficult and time-consuming task.
Currently, mobile communication devices are configured to communicate with Web Services through Internet based Browsers and/or native applications. Browsers have the advantage of being adaptable to operate on a cross-platform basis for a variety of different devices, but have a disadvantage of requesting pages (screen definitions in HTML) from the Web Service, which hinders the persistence of data contained in the screens. A further disadvantage of Browsers is that the screens are rendered at runtime, which can be resource intensive. Native applications have the advantage of being developed specifically for the type of mobile device, thereby providing a relatively optimized application program for each runtime environment. However, native applications have a disadvantage of not being platform independent, thereby necessitating the development of multiple versions of the same application, as well as being relatively large in size, thereby taxing the memory resources of the mobile device. Further, application developers need experience with programming languages such as Java™ and C++ to construct these hard coded native applications. There is a need for application development environments that can assist in the development of applications for selected devices and terminals with their respective runtime environment, as well as being capable of assisting the selection from a variety of back-end data sources.
Systems and methods disclosed herein provide a component based application development environment to obviate or mitigate at least some of the above presented disadvantages.